2-3 trees שיטות אנליזה לניתוח זמנים משוערך Amortized Time Analysis Lecture 14 of Geiger & Itai s slide brochure www.cs.technion.ac.il/~dang/courseds Chapter 17 Amortized Analysis (405 429) חומר קריאה לשיעור זה: Geiger & Itai, 2011 חלק מהשקפים משתמשים בתרגומיו הנאים של המתרגל גיל כהן בקורס שיטות באנליזה של אלגוריתמים )236715( משנת 2008.
2-3 trees זמן ומחיר משוערך 2 הגדרה: אם n פעולות מתבצעות פעולה מוגדר להיות.T(n)/n בזמן כולל,T(n) אזי הזמן המשוערך לכל נימוקים להגדרה: כאשר ישנה סדרה ארוכה של פעולות שרובן קלות לביצוע וחלקן קשה לביצוע )כגון במימוש האחרון של,)union-find אז ההשפעה של הפעולות הקשות מתחלקת על סדרת הפעולות כולה. יתכן גם מצב שזמן בצוע הפעולה משתנה כתוצאה מ"עזרה" הניתנת בזמן פעולה קודמת )למשל find המכווצת מסלולים( ואז הזמן המשוערך הוא מדד המתחשב בתרומה של פעולה אחת לרעותה. cs,technion בהרצאה זו נמיר את מושג הזמן במושג מחיר. נדבר על מחיר משוערך ומחיר בפועל. המרה זו רלוונטית כל עוד המחיר הכולל פרופורציונאלי לזמן הכולל. המרה פשוטה זו מאפשרת חשיבה אנליטית בזווית ראיה חדשה. נראה שלוש שיטות ניתוח: צבירה, חיובים, פוטנציאל.
2-3 trees מחסנית עם פקודת הוצאה מורחבת נזכר בפעולות הרגילות של המחסנית push(s,x) pop(s), הלוקחות זמן (1)O. נגדיר את מחיר כל פעולה להיות יחידה אחת. 3 נגדיר פעולה נוספת: multipop(s,k) - הפעולה מוציאה מהמחסנית את k האיברים העליונים ואם ישנם פחות איברים אז הפעולה מרוקנת את המחסנית. המימוש ע"י בצוע של פעולות pop(s) בלולאה עד להתרוקנות המחסנית או הוצאת k איברים. זמן O(min(k,s)) כאשר s הוא מספר האיברים במחסנית. מחיר הפעולה מוגדר כמספר ההפעלות של פעולת ה.pop(S) cs,technion
2-3 trees ניתוח בשיטת הצבירה Aggregate Analysis בשיטת הצבירה לעריכת אנליזה משוערכת מראים שכל סדרה של n פעולות עולה במקרה הגרוע מחיר כולל,T(n) ומכאן שהמחיר המשוערך של פעולה במקרה הגרוע הוא.T(n)/n 4 בנתוח גס: פעולת multipop בודדת יכולה לעלות מחיר n הגרוע עבור סדרה של n פעולות יידרש מחיר של ) 2.O(n ולכן במקרה בניתוח עדין: לכל סדרה של n פעולות יידרש במקרה הגרוע מחיר O(n) שכן לכל פעולת multipop שמחירה k קדמו k פעולות push )המחסנית מתחילה ריקה( ולכן סך המחיר של 2k מתחלק על פני 1+k פעולות והמחיר המשוערך הוא (1)O. תוצאה זו היא למקרה הגרוע ביותר. היא נכונה לכל סדרת פעולות באורך n. cs,technion
2-3 trees ניתוח בשיטת החיובים Accounting method בשיטת החיובים זוקפים לחובתה של כל פעולה עלות הנקראת המחיר המשוערך.(amortized cost) C i כאשר המחיר המשוערך של פעולה גבוה מהמחיר בפועל c, i ההפרש משמש כיתרת זכות.(credit) ביתרה זו ניתן להשתמש בעתיד לסיוע בתשלום פעולות שהמחיר המשוערך שלהם קטן ממחירם בפועל. המחיר המשוערך הכולל של כל סדרת פעולות חייב להיות חסם עליון על המחיר הכולל בפועל של הסדרה )אסורה יתרת חובה( כלומר: 5 cs,technion
2-3 trees ניתוח המחסנית בשיטת החיובים 6 המחיר בפועל לפעולות המחסנית הוא: 1 שקל לפעולת,pop 1 שקל לפעולת push וכן min(k,s) שקלים לפעולת ה- multipop. נגדיר מחיר משוערך של 2 שקלים לכל פעולת Push עבור שאר הפעולות. ומחיר 0 שקלים cs,technion
2-3 trees ניתוח בשיטת הפוטנציאל The Potential method בשיטת הפוטנציאל התשלום מראש עבור ביצוע פעולות אינו משויך כיתרה לזכות עצם מסוים במבנה הנתונים, אלא כאנרגיה פוטנציאלית של מבנה הנתונים כגוף אחד. פוטנציאל אשר ניתן לשחרר כדי לשלם עבור פעולות בעתיד. נסמן את מבנה הנתונים לאחר פעולה i ע"י D i וב- Φ את פונקציית הפוטנציאל. המחיר המשוערך נקבע ע"י המחיר בפועל בתוספת הפרש הפוטנציאלים: 7 בסיכום על כל הפעולות מקבלים: cs,technion
2-3 trees 8 ניתוח המחסנית בשיטת הפוטנציאל בהגדרות אלה: מחיר משוערך של Push הוא 1+1= 2 כאשר 1 הוא הפרש הפוטנציאלים בתוספת 1 של המחיר בפועל. מחיר משוערך של multipop(s,k) הוא 0 שכן מחיר הפעולה בפועל שווה בדיוק להפסד הפוטנציאל. שניהם שווים ל-( min(k,s. מחיר משוערך ל- pop גם אפס מאותה סיבה. המחיר המשוערך ל- n O(n) פעולות הוא וזהו חסם למחיר בפועל.
2-3 trees 9 שלוש השיטות ממעוף הציפור שיטת הצבירה: מציאת חסם לכל סדרת פעולות. שיטת החיוב: צבירת קרדיט בגין פעולות מסוימות. שיטת הפוטנציאל: צבירת פוטנציאל במבנה הנתונים לשימוש פעולות עתידיות. שיטת הפוטנציאל היא הגמישה ביותר אך לעיתים נוח יותר לחשוב בשיטות האחרות.
2-3 trees 10 בעיית המונה הבינארי נבחן את שלוש השיטות באמצעות פעולה על מונה בינארי בן k סיביות. ייצוגו של המונה הוא A=a 1-k a 1 a 0 וערכו הוא המספר המיוצג בו בבסיס 2 )מודולו 2) k כאשר a 0 היא הספרה הפחות משמעותית. המונה מאותחל לאפס. הפעולה שנרצה לתמוך בה היא פעולת ה- Increment המגדילה את ערך המונה באחד )מודולו 2). k A=11010111 A=11011000 A=11011001 A=11011010 לאחר הוספת מספר אחדים: לאחר הוספת עוד 1: לאחר הוספת עוד 1: לאחר הוספת עוד 1:
2-3 trees 11 בעיית המונה הבינארי Increment(A) i 0 while i< length(a) and a i = 1 do a i 0 i i+1 if i< length(a) then a i 1 הפעולה ממומשת באופן הבא: המחיר של פעולת Increment תלוי ליניארית במספר הסיביות שהחליפו את ערכן. מחיר סדרה של n פעולות חסום ע"י.O(nk) לפיכך חסם פשוט למחיר )והזמן( המשוערך לפעולה הוא.O(k) גרוע!!!!!
2-3 trees 12 ניתוח בשיטת הצבירה A=11010111 A=11011000 A=11011001 A=11011010 לאחר הוספת 1: לאחר הוספת עוד 1: לאחר הוספת עוד 1:
2-3 trees 13 ניתוח בשיטת החיובים נגדיר מחיר משוערך של 2 שקלים לקביעת שקלים לקביעת ערך של סיבית ל- 0. ערך של סיבית ל- 1 ומחיר של 0 הרעיון: כאשר ערכה של הסיבית נקבע ל- 1 אנו משלמים שקל אחד )מתוך השניים(. השקל השני נשמר כיתרת זכות עבור פעולת איפוס עתידית של סיבית זו. נחשב את המחיר המשוערך של פעולת.Increment במהלך ביצוע פעולת,Increment סיבית אחת לכל היותר מחליפה את ערכה מ- 0 ל- 1, ולפיכך המחיר המשוערך של פעולת increment הוא לכל היותר 2 שקלים. מכיוון שיתרת הזכות לעולם אינה שלילית )כל סיבית שמכבים הודלקה קודם( נובע שהמחיר המשוערך הכולל של n פעולות Increment הוא,O(n) וזהו חסם על המחיר הכולל בפועל. המחיר המשוערך לפעולה הוא (1)O.
םי- 2-3 trees 14 ניתוח בשיטת הפוטנציאל נגדיר את פוטנציאל המונה לאחר ביצוע פעולת ה- Increment ה- i על ידי מספר. Φ(D i )=b i ה- 1 במונה לאחר ביצוע פעולה זו. נסמן מספר זה ב- לפיכך הפרש הפוטנציאלים הוא: לדוגמא בהפעלת על A=11010111 Incremet יתקבל בפעולה זו מתאפסות שלוש סיביות ומשתנות ארבע סיביות. הפרש הפוטנציאלים 2-. A=11011000
2-3 trees 15 ניתוח בשיטת הפוטנציאל מכיוון שהפרש הפוטנציאלים הוא: מתקבל שהמחיר המשוערך קבוע: מתקיים שהפוטנציאל של D 0 הוא 0 והפוטנציאל לכל i תמיד גדול מאפס. לפיכך המחיר המשוערך הכולל של n פעולות increment מהווה חסם עליון על המחיר הכולל בפועל. חסם זה הוא 2n.
2-3 trees 16 cs,technion
2-3 trees 17 הרחבה של טבלאות כאשר מגדירים מערך קובעים מראש את מספר האיברים המקסימלי. ומה לעשות כאשר נוצר צורך בחריגה ממספר האיברים המקסימלי שהוגדר מראש? אלגוריתם: איבר ראשון יוכנס בטבלה בגודל 1. כאשר הטבלה הנוכחית בגודל m מלאה, נכפיל את גודלה ל- 2m נעביר את האיברים למבנה המוכפל ואז נכניס את האיבר החדש. מחיר בפועל של העברה של m איברים לטבלה מוגדלת הוא.O(m) מהו המחיר הכולל ל- n פעולות הכנסה? בניתוח גס פעולת הכנסה עולה O(n) שכן היא עלולה לגרום להכפלת גודל המבנה ולהעברה של n איברים למבנה החדש. לפיכך המחיר של סדרה בת n פעולות הכנסה חסום עי ) 2.O(n והמחיר המשוערך לפעולה הוא.O(n) גרוע!!!
2-3 trees 18 ניתוח בשיטת הצבירה הניתוח הקודם גס מאד מכיוון שבסדרת פעולות הכנסה I 1 I, 2 I,, k פעולת ההכפלה היקרה מתבצעת רק כאשר מספר האיברים במבנה הינו חזקה מדויקת של 2. זהו מאורע נדיר ולכן המחיר המשוערך לפעולה יוצא (1)O כפי שניווכח. המחיר בפועל ואחרת 1. c i של פעולת הכנסה הוא i אם 1-i היא חזקה מדויקת של 2, לפיכך מחיר של n פעולות הכנסה חסום כדלקמן שכן לכל היותר יש n במחיר יחידה ושאר הפעולות במחיר המסתכם בטור גאומטרי: פעולות
2-3 trees 19 ניתוח בשיטת החיובים נקבע מחיר משוערך לפעולת ההכנסה להיות 3= i C. ואז החסם ל- n פעולות הוא 3n. הרעיון הוא שבכל הכנסת איבר למבנה יש )א( לשלם 1 שקל על ההכנסה הנוכחית למבנה )ב( להפקיד 1 שקל על העברה עתידית של האיבר הנוכחי למבנה מוגדל )ג( להפקיד 1 שקל עבור העברה עתידית של איבר אחר במבנה. טענה: המאזן תמיד חיובי. נניח שגודל הטבלה הוא m מיד לאחר הכפלה. מספר האיברים שהיו במבנה לפני ההכפלה הוא 2/m והיתרה לאחר העברתם היא B. עלות הכנסה של איבר היא שקל. שקל נוסף נזקף לאיבר כקרדיט ושקל נוסף נזקף כקרדיט לאחד מ- 2/m האיברים במבנה המוכפל. מילוי הטבלה עד להכפלה נוספת דורש 2-1/m הכנסות נוספות. לפיכך עד שהטבלה מתמלאת כל איבר קיבל שקל כקרדיט. זהו בדיוק מחיר ההכפלה הבאה ולכן הקרדיט אחריה נשאר B. הכנסות איברים בין ההכפלות רק מגדילות את B. והקרדיט B לאחר ההכנסה הראשונה לא שלילי.
2-3 trees 20 ניתוח בשיטת הפוטנציאל נרצה פונקציית פוטנציאל שהיא 0 מיד לאחר ההכפלה וגדלה למקסימום כאשר הטבלה מלאה. למשל נקבע פוטנציאל: Φ)D i )=2n i -m i כאשר n i הוא מספר האיברים במבנה D i ו- m i הוא הגודל הנוכחי של המבנה D. i ואמנם כאשר המבנה מלא כלומר,,n=m הפוטנציאל הוא m ורגע לאחר ההכפלה הפוטנציאל של המבנה הוא 0 שכן מתקיים.2n-m=0
2-3 trees 21 ניתוח בשיטת הפוטנציאל נראה שחסם זה הוא 3n. לשם כך נראה שהמחיר המשוערך לפעולת הכנסה הוא 3= i C. ישנם שני מקרים: הכנסה ללא הכפלה והכנסה הגורמת להכפלה. עבור הכנסה ללא הכפלה, שמחירה בפועל 1, מתקיים m i =m i-1 ולפיכך: עבור הכנסה עם הכפלה, שמחירה בפועל,n i מתקיים i-1 m i =2m וכן -1 i.m i-1 = n i-1 =n ומכאן -1) i.m i =2(n ולפיכך:
2-3 trees 22 הרחבה של ערימה כאשר מגדירים ערימה קובעים מראש את מספר האיברים המקסימלי כאשר הערימה מיוצגת כעץ בינארי כמעט שלם תוך שימוש במערך. ומה לעשות כאשר יש חריגה ממספר האיברים המקסימלי שהוגדר מראש? פתרון: נתחיל בערימה בגודל 1. כאשר הערימה הנוכחית מתמלאת נכפיל את גודלה ונכניס את האיברים למבנה המוכפל. מהו הזמן הכולל ל- n פעולות הכנסה? באותן השיטות ניתן לבדוק שהמחיר המשוערך לסדרת הפעולות הוא log(n)) O(n ולפיכך המחיר המשוערך לפעולה נותר.O(log(n)) באותן השיטות גם מראים שהכנסה לטבלאות ערבול מתרחבות דורשת זמן ממוצע משוערך של (1)O.
2-3 trees 23 הרחבה וכווץ של טבלאות מה לעשות כאשר מספר האיברים בטבלה מצטמצם מאד יחסית לגודלה. נרצה לשחרר זיכרון ולהקטין את הטבלה. אלגוריתם מוטעה: איבר ראשון יוכנס בטבלה בגודל 1. כאשר הטבלה הנוכחית בגודל m מתמלאת, נכפיל את גודלה ל- 2m ונעביר את האיברים למבנה המוכפל. כאשר בטבלה נותרים 2/m איברים הם מועברים לטבלה בגודל 2/m. מה הבעיה? נסתכל על טבלה שהוכפלה ומספר איבריה בדיוק מעל חצי גודלה. נוציא שני איברים, נכניס שני איברים, נוציא שני איברים ונכניס שני איברים, וכך הלאה n פעמים. בצורה זו חצי מכל הפעולות הללו דורשות צמצום או הרחבה והמחיר המשוערך לפעולה בודדת הוא.O(n) גרוע!!!
2-3 trees 24 שיפור האלגוריתם בעזרת שיטת הפוטנציאל בסדרה של הכנסות בלבד צברנו תמיד מספיק פוטנציאל לכל הכפלה. הבעיה בדוגמה הקודמת היא שאין מספיק צבירת פוטנציאל לקראת הכפלה או חלוקה. אלגוריתם: איבר ראשון יוכנס בטבלה בגודל 1. כאשר הטבלה הנוכחית בגודל m מתמלאת, נכפיל את גודלה ל- 2m ונעביר את האיברים למבנה המוכפל. כאשר בטבלה נותרים 4/m איברים הם מועברים לטבלה בגודל 2/m. כיצד השינוי הקטן הזה עוזר? ראינו כבר שטבלה מלאה צוברת פוטנציאל להכפלה. כאשר מספר האיברים מצטמצם ניתן להשתמש בפוטנציאל זה כדי להעבירם לטבלה קטנה יותר אבל יש לחייב הגדלת פוטנציאל לפני שמחזירים אותם לטבלה גדולה יותר. מכיוון שמעבירים 4/m איברים לטבלה בגודל 2/m עד למילוי טבלה זו יוכנסו עוד 4/m איברים וייצבר הפוטנציאל להכפלה חדשה.
2-3 trees 25 ניתוח בשיטת הפוטנציאל נזכר שפקטור העומס של טבלה.α i =n i / m i מוגדר ע"י D i נשים לב שהפוטנציאל לטבלה D 0 הוא )0= 0 0 n( 0 m= ושהפוטנציאל לעולם אינו שלילי. לכן המחיר המשוערך הכולל הוא חסם עליון על המחיר הכולל בפועל. נשים לב שכאשר המבנה מלא כלומר,,n=m הפוטנציאל מקסימלי והוא m ורגע לאחר ההכפלה הפוטנציאל של המבנה הוא 0 שכן מתקיים 2n=m )וגם התנאי השני מתקיים m/2=n כלומר פונקציית הפוטנציאל רציפה(. כאשר המבנה יורד לרבע מגודלו )4/ i m( אזי הפוטנציאל בו כמספר האיברים )4/ i m(.
2-3 trees 26 חישוב המחיר המשוערך לפי הפוטנציאל אנו צריכים לחשב את המחיר המשוערך C i עבור פעולת ההכנסה ופעולת ההוצאה כאשר מתקיימים או לא מתקיימים הרחבות וכווצים ועבור ערכים שונים של פקטור העומס לפני ואחרי הפעולה. די הרבה מקרים ודי מעייף. אבל בכל המקרים קל לראות שהמחיר המשוערך לפעולה קטן מ- 3 ולכן המחיר הכולל בפועל לסדרה בת n פעולות הוא.O(n)
2-3 trees 27 חישוב מחיר הכנסה משוערך לפי הפוטנציאל
2-3 trees 28 חישוב מחיר הוצאה משוערך לפי הפוטנציאל